package org.hughie.springframework.beans.factory.config;

import org.hughie.springframework.beans.BeansException;

/**
 * {@link BeanFactoryPostProcessor}处理的是BeanDefinition，是在Bean实例化之前做的工作
 * BeanPostProcessor是在Bean实例化之后对Bean的增强
 *
 * @author hughie.cheng
 * @since 2023/5/24
 */
public interface BeanPostProcessor {

    /**
     * 在 Bean 对象执行初始化方法之前，执行此方法
     *
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;

    /**
     * 在 Bean 对象执行初始化方法之后，执行此方法
     *
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;

}
